Bitrate and pipeline preservation for content presentation

ABSTRACT

Systems and methods for optimizing a content change process are provided. In example embodiments, a digital receiver causes playback of a first piece of content. The digital receiver receives a selection of a new piece of content for playback during the playback of the first piece of content. In response to the receiving of the selection, the digital receiver maintains a bitrate used for playback of the first piece of content to initiate playback of the new piece of content.

CLAIM OF PRIORITY

This application claims priority to India Application Serial No.201741031917, filed on Sep. 8, 2017, which is incorporated herein byreference in its entirety.

FIELD

The present disclosure generally relates to machines configured to thetechnical field of special-purpose machines that optimizes a contentchange process (e.g., channel change) including computerized variants ofsuch special-purpose machines and improvements to such variants, and tothe technologies by which such special-purpose machines become improvedcompared to other special-purpose machines that facilitate optimizingcontent changes. In particular, the present disclosure addresses systemsand methods for preserving a download bitrate and a content playbackpipeline during a content change process.

BACKGROUND

Conventionally, during a switch in content (e.g., caused by a channelchange or a selection of a different piece of content), a delay occursas certain information is obtained before the new piece of content(e.g., program, movie, show) is rendered and displayed. Additionally,for adaptive bitrate streaming content, the content typically startsstreaming or download at a low (or lowest) bitrate before slowlyincreasing in bitrate until an optimum bitrate is achieved. This resultsin initial video or images being grainy. Furthermore, the delay may beincreased by a need to build a content playback pipeline each time achange in content occurs.

BRIEF DESCRIPTION OF DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present invention and cannot be considered aslimiting its scope.

FIG. 1 is a diagram illustrating an example environment for optimizingcontent changes;

FIG. 2 is a block diagram illustrating an example embodiment ofcomponents within a digital receiver in accordance with an exampleembodiment.

FIG. 3 is a flow diagram of a method for optimizing a content changeprocess in accordance with example embodiments.

FIG. 4 is a flow diagram of a method for preserving a content deliverypipeline in accordance with example embodiments.

FIG. 5 is a diagrammatic representation of a machine in an example formof a computing system within which a set of instructions may be executedfor causing the machine to perform any one or more of the methodologiesdiscussed herein, according to an example embodiment.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the present inventive subject matter.In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide an understanding ofvarious embodiments of the inventive subject matter. It will be evident,however, to those skilled in the art, that embodiments of the inventivesubject matter may be practiced without some or other of these specificdetails. In general, well-known instruction instances, protocols,structures, and techniques have not been shown in detail. Examplesmerely typify possible variations. Unless explicitly stated otherwise,structures (e.g., structural components, such as modules) are optionaland may be combined or subdivided, and operations (e.g., in a procedure,algorithm, or other function) may vary in sequence or be combined orsubdivided.

Example embodiments described herein provide systems and methods foroptimizing content changes or switch in content being viewed, such asthrough a channel change or selection of a different piece of contentfrom a watchlist. In some embodiments, the system uses navigationalcontext (e.g., the way a user is interacting with an application) toidentify content of (potential) interest to a viewer. The system thenprefetches metadata for the content of interest from a content providerand stores the metadata to local cache. The metadata comprisespreconditions for rendering and display of a piece of content thatinclude a minimum set of data that a system can obtain without having todecrypt the content. The prefetched metadata may be used, in exampleembodiments, to determine whether to preserve at least a portion of acontent playback pipeline (also referred to herein as a “content deliverpipeline” or simply a “pipeline”).

Conventionally, a same piece of content is broken up into segments(e.g., 10 second segments) and each segment is available in variousbitrates. A low bitrate may be grainy, while a high bitrate willnormally have better image quality. Typically, when playback of a newpiece of content starts, the system does not know the quality of thenetwork bandwidth. As a result, in order to start playback as quickly aspossible, conventional systems start with a lowest bitrate. Thus, everytime a user switches from one content to the next content, the playbackwill start with the lowest bitrate and slowly increase or improveaccording the capability of the network. In contrast, exampleembodiments, preserve a previous bitrate when switching to a new pieceof content. That is, when a user selects a new piece of content toplayback (e.g., switching from a previous piece of content to the newpiece of content), example embodiments maintain or preserve a(heuristically determined) bitrate used for streaming or downloading theprevious piece of content when initiating the playback of the new pieceof content. This allows for starting playback as quickly as possiblewhile also providing better image quality from the start.

Furthermore, in conventional systems, a switch or transition in contenttypically causes a previous content delivery pipeline to bedeconstructed (e.g., resources previous acquired are released).Subsequently, a new pipeline is created for the new piece of content(e.g., new resources are acquired). In contrast, example embodiments maymaintain or preserve a portion (or an entire) content delivery pipeline(e.g., comprising a source element, a demultiplexer (“demux”), a videodecoder, and an audio decoder) used to obtain the previous piece ofcontent instead of reconstructing a pipeline (e.g., destroying thecontent delivery pipeline and building a new content delivery pipeline).The preservation of the pipeline also allows for playback of the newcontent as quickly as possible.

As a result, one or more of the methodologies described hereinfacilitate solving the technical problem of optimizing content change(e.g., reducing time for a change in channel or loading of new content)regardless of the delivery channel—whether the content is broadcast(e.g., IPTV and multicast) or over-the-top (OTT). The methodologiesinclude causing playback, by a digital receiver, of a first piece ofcontent and receiving a selection of a new piece of content for playbackduring the playback of the first piece of content. In response to thereceiving of the selection, the digital receiver maintains a bitrateused for playback of the first piece of content to initiate playback ofthe new piece of content. The methodologies further include determiningwhether to preserve at least a portion of a playback pipeline whenswitching to playback of the new piece of content. In some embodiments,preservation of at least a portion of the playback pipeline comprisesdetermining whether to retrain an audio decoder and a video decoder ofthe pipeline when switching to playback of the new piece of content.Accordingly, one or more of the methodologies discussed herein improvesupon latency during content changes while maintaining image quality. Itis noted that content changes include a selection of a piece of contentfor viewing (e.g., from a content access page such as a favorites gridor via a programming guide) as well as channel changes (e.g., linearchannels changes).

With reference to FIG. 1, an embodiment of an example environment 100that enables optimizing content changes (e.g., reducing latency duringchannel changes or selection of a piece of content for viewing) isshown. In example embodiments, a digital receiver 102 of a user providesaccess to digital content and manages content change operations. In oneembodiment, the digital receiver 102 is a set-top box. The digitalreceiver 102 is coupled to a viewing device 104 (e.g., a television ormonitor) on which the user can view the digital content. In someembodiments, the digital receiver 102 (e.g., operations of the digitalreceiver 102) may be combined with the viewing device 104 (e.g., a smarttelevision, a tablet, or smartphone). The components of the digitalreceiver 102 used to perform operations of example embodiments will bediscussed in more detail in connection with FIG. 2 below.

In some embodiments, the digital receiver 102 accesses (e.g., pulls,receives, retrieves) content via a network 106 from a contentdistribution network (CDN) server 108. The CDN server 108 may obtain thecontent from one or more content providers 110 (e.g., servers of thecontent providers 110). In example embodiments, the CDN server 108 maybe associated with a third party service (e.g., Netflix, Hulu, YouTube,Amazon,) that stores and provides content, such as, for example but notlimited to, over-the-top (OTT) content, video-on-demand (VOD) content,Internet content, or broadcast content to the digital receiver 102 viathe network 106. The content comprises text, images, audio, and/or videocontent (e.g., movies, television shows, videos), and in someembodiments comprise live (e.g., in real-time) content. In someembodiments, the content providers 110 provide content, over the network106 directly to the digital receiver 102 for display on the viewingdevice 104.

One or more portions of the network 106 may be an ad hoc network, anintranet, an extranet, a virtual private network (VPN), a local areanetwork (LAN), a wireless LAN (WLAN), a wide area network (WAN), awireless WAN (WWAN), a metropolitan area network (MAN), a portion of theInternet, a portion of the Public Switched Telephone Network (PSTN), acellular telephone network, a wireless network, a WiFi network, a WiMaxnetwork, a satellite network, a cable network, a broadcast network,another type of network, or a combination of two or more such networks.Any one or more portions of the network 106 may communicate informationvia a transmission or signal medium. As used herein, “transmissionmedium” refers to any intangible (e.g., transitory) medium that iscapable of communicating (e.g., transmitting) instructions for executionby a machine (e.g., by one or more processors of such a machine), andincludes digital or analog communication signals or other intangiblemedia to facilitate communication of such software.

It is noted that the environment 100 shown in FIG. 1 is merely anexample. For instance, any number of CDN servers 108 and contentproviders 110 may be embodied within the environment 100. Additionally,some components of the environment 100 may be combined. For example, thefunctions of the digital receiver 102 may be embodied within the viewingdevice 104 to form a single device, such as a smart television, tablet,smartphone, or any other device that is capable of obtaining, rendering,and displaying content. Moreover, the functions described herein for anysingle system or machine may be subdivided among multiple systems ormachines.

Any of the systems or machines (e.g., databases, devices, servers) shownin, or associated with, FIG. 1 may be, include, or otherwise beimplemented in a special-purpose (e.g., specialized or otherwisenon-genetic) computer that has been modified (e.g., configured orprogrammed by software, such as one or more software modules of anapplication, operating system, firmware, middleware, or other program)to perform one or more of the functions described herein for that systemor machine. For example, a special-purpose computer system able toimplement any one or more of the methodologies described herein isdiscussed below with respect to FIG. 5, and such a special-purposecomputer may accordingly be a means for performing any one or more ofthe methodologies discussed herein. Within the technical field of suchspecial-purpose computers, a special-purpose computer that has beenmodified by the structures discussed herein to perform the functionsdiscussed herein is technically improved compared to otherspecial-purpose computers that lack the structures discussed herein orare otherwise unable to perform the functions discussed herein.Accordingly, a special-purpose machine configured according to thesystems and methods discussed herein provides an improvement to thetechnology of similar special-purpose machines.

FIG. 2 is a block diagram illustrating an example embodiment ofcomponents within the digital receiver 102 in accordance with an exampleembodiment. In example embodiments, the digital receiver 102 managesaccess to content streamed over the network 106. In particular, thedigital receiver 102 prefetches metadata, preserves a bitrate used forplayback (e.g., streaming or downloading) of a previous piece of contentwhen initiating the playback of a new piece of content, and preserves atleast a portion of a content delivery pipeline. To enable theseoperations, the digital receiver 102 comprises a player 202, a contentdelivery pipeline 204 (also referred to as “pipeline”), a cache manager206, and a cache 208, all of which may be configured to communicate witheach other (e.g., over a bus, shared memory, or a switch). The digitalreceiver 102 comprises other components (not shown) that are notpertinent to operations of example embodiments.

The player 202 is configured to manage the pipeline 204. In exampleembodiments, the player 204 instantiates (e.g., constructs) the pipeline204 when a first piece of content is selected for display. A differentpipeline may be constructed for each type of content. For example, theplayer 202 constructs a HTTP Live Streaming (HLS) pipeline for HLScontent and constructs a Dynamic Adaptive Streaming over HTTP (DASH)pipeline for DASH content. The player 204 also decides whether tomaintain at least a portion of the pipeline 204 or construct a newpipeline when a switch in content occurs (e.g., channel change orselection of new content for viewing). An example method for managingthe preservation of the pipeline is discussed in further detail inconnection with FIG. 4 below.

The pipeline 204 is constructed by the player 202 by acquiringappropriate resources for obtaining and processing content data in orderto playback selected content. The resources of the pipeline 204 comprisea source element 212, a demultiplexer (“demux”) 214, an audio decoder216, and a video decoder 218. The source element 212 manages thedownloading of content data for the selected piece of content. Thesource element 212 also manages bitrate adaptation at the digitalreceiver 102. Specifically, the source element 212 remembers a lastbitrate that is used for playback of a current/previous piece ofcontent, and continues to use that bitrate for playback of the newcontent. As such, if the last bitrate is high, the source element 212will start with the same high bitrate for the new content. If the newcontent cannot be playback at that bitrate, then the source element 212will lower the bitrate. For example, if the downloading of the contenttakes less time than anticipated, there is spare bandwidth and thebitrate can be increased. Conversely, if the download is taking longerthan anticipated, then the bitrate is decreased. As such, exampleembodiments, will start the playback of the new content at theprevious/last bitrate instead of starting at a lower or lowest bitrate(and slowly increasing).

The demux demultiplexes the content data obtained from the CDN server108 or the content provider 110 to obtain an audio signal and a videosignal. The audio signal is transmitted to the audio decoder 216 forprocessing, while the video signal is transmitted to the video decoder218 for processing. The results from the audio and video decoders 216and 218 are output (e.g., transmitted) to the viewing device 104 forpresentation to the user.

The cache manager 206 manages the prefetching of metadata for contentthat may potentially be selected for playback. In some embodiments, thecache manager 206 predicts content the user may be interested inviewing. For example, a user may be navigating a linear list of channelsor programs (e.g., an electronic programming guide; “EPG”) in aparticular direction (e.g., up or down). In this embodiment, the cachemanager 206 predicts a next set of content based on the direction ofnavigation on the linear list. In another example, the user may beviewing a video-on-demand (VoD) catalog or a watchlist of a user. If theuser requests information or hovers over a selection for a piece ofcontent, the cache manager 206 uses this as prediction that the piece ofcontent is of interest to the user. Alternatively, the cache manager mayconsider all (or some) pieces of content in viewable portion of thecatalog or watchlist as content of interest. In any of these cases, thecache manager 206 prefetches the metadata for the content of interest,and stores the prefetched data to the cache 208. The metadata maycomprise, for example, one or more uniform resource locators (URLs)where the chunks of content are available, URLs for different bit rates,license data (e.g., where to obtain a license from), and codecinformation. The codec information will be used by the player 202 todetermine whether to preserve at least a portion of the pipeline 204, aswill be discussed further below. If the user subsequently selectscontent for which the metadata is already prefetched, then the metadatacan be accessed from the cache 208 instead of having to be retrievedover the network 106 from the CDN server 108 or the content provider 110after selection. This will assist in the reduction of latency inplayback.

Any one or more of the components (e.g., modules, decoders, resources)described herein may be implemented using hardware alone (e.g., one ormore processors of a machine) or a combination of hardware and software.For example, any component described herein may physically include anarrangement of one or more of the processors or configure a processor(e.g., among one or more processors of a machine) to perform theoperations described herein for that module. Accordingly, differentcomponents described herein may include and configure differentarrangements of the processors at different points in time or a singlearrangement of the processors at different points in time. Eachcomponent described herein is an example of a means for performing theoperations described herein for that component. Moreover, any two ormore of these components may be combined into a single component, andthe functions described herein for a single component may be subdividedamong multiple components. Furthermore, according to various exampleembodiments, components described herein as being implemented within asingle machine, database, or device may be distributed across multiplemachines, databases, or devices.

FIG. 3 is a flow diagram of an example method 300 for optimizing contentchange in accordance with example embodiments. In example embodiments,the method 300 is performed in part or in whole by components of thedigital receiver 102. Accordingly, the method 300 is described by way ofexample with reference to the digital receiver 102. However, it shall beappreciated that at least some of the operations of the method 300 maybe deployed on various other hardware configurations or be performed bysimilar components residing elsewhere in the environment 100. Therefore,the method 300 is not intended to be limited to the digital receiver102.

In operation 302, a first piece of content is caused to be played by theviewing device 104. In example embodiments, the player 202 constructsthe pipeline 204 for obtaining and processing the content data for thefirst piece of content. In particular, the player 202 acquires thesource element 212, the demux 214, the audio decoder 216, and the videodecoder 218 to form the pipeline 204. The data content is processed bythe pipeline 204 and presented on the viewing device 104.

In operation 304, metadata for a set of one or more content of interestis prefetched. In example embodiments, the cache manager 206 predictscontent of interest of a user and prefetches the metadata for thecontent of interest. The prefetched data is then stored to the cache208. The metadata may comprise, but is not limited to, one or more URLswhere the chunks of content are available, one or more URL for differentbit rates, license data (e.g., where to obtain a license from), andcodec information.

In operation 306, the player 202 receives an indication to switch to anew piece of content for playback. The indication may be received from acontrol device of the user (e.g., a remote controller). In someembodiments, the user may scroll through an EPG or be viewing a catalogor watchlist, and selects a new piece of content for viewing.

In operation 308, the digital receiver 102 maintains the bitrate whenswitching playback to the new piece of content. In example embodiments,when transitioning playback from an ongoing playback operation to a newplayback operation, the source element 212 uses a heuristic bitratederived for playback of the first piece of content for playback of thenew piece of content. Thus, the source element 212 attempts to maintainor preserve the bitrate for playback as opposed to starting a newplayback from the lowest possible bitrate. If the new piece of contentcannot be delivered at that bitrate, then the source element 212. willlower the bitrate. As such, example embodiments, will start the downloadof the new content at the previous/last bitrate instead of starting at alower or lowest bitrate (and slowly increasing). This allows playback ofthe new content at a most optimal bitrate instantly instead of having toheuristically re-compute the optimal bitrate starting from the lowestpossible bitrate. Conventionally, the derivation of the optimal bitrateusually requires downloading several segments or chunks of content dataresulting in a gradual improvement of picture quality. However, exampleembodiments that use the previous derived heuristic bitrate maintain thesame level of image quality as that of the previous playback from a verybeginning of playback for the new content.

In operation 310, a pipeline preservation process is performed todetermine whether to maintain at least a portion of the pipeline used toplayback the first piece of content for use with the playback of the newpiece of content. Furthermore, if the pipeline is to be maintained orpreserve, a determination is made as to whether all the resources of thepipeline should be preserved or only a portion of the pipeline preserved(e.g., only some of the resources are kept and others are released). Thepipeline preservation process will be discussed in more detail inconnection with FIG. 4.

FIG. 4 is a flow diagram of an example method 400 for preserving acontent delivery pipeline in accordance with example embodiments. Inexample embodiments, the method 400 is performed in part or in whole bythe player 202 with respect the resources of the pipeline 204.Accordingly, the method 400 is described by way of example withreference to the player 202 and the pipeline 204. However, it shall beappreciated that at least some of the operations of the method 400 maybe deployed on various other hardware configurations or be performed bysimilar components residing elsewhere in the environment 100. Therefore,the method 400 is not intended to be limited to the player 202 and thepipeline 204.

In operation 402, in response to receiving the indication to switchplayback to new content, the cache manager 206 accesses the prefetchedmetadata stored in the cache 208 for the new content. The prefetchedmetadata for the new content may comprise one or more URLs where the newcontent is available, one or more URLs for different bit ratesassociated with the new content, license data for the new content, andcodec information for the new content. The prefetched metadata may alsoindicate whether the new content is of a same type as the first piece ofcontent. For example, the first piece of content and the new content mayboth be in a HTTP Live Streaming (HLS) format or both be in a DynamicAdaptive Streaming over HTTP (DASH) format.

In operation 404, the player 202 determines whether the first piece ofcontent and the new content are of the same content type. If the firstpiece of content and the new content are not of the same type (e.g.,first piece of content is in HLS format and the new content is in DASHformat), then the resources of the pipeline 204 (e.g., the sourceelement 212, the demux 214, the audio decoder 216, and the video decoder218) are released in operation 406. Releasing all the resources of thepipeline 204 essentially deconstructs the pipeline 204. The player 202them creates a new pipeline by acquiring other resources that areapplicable to the content type of the new content.

If in operation 404 the player 202 determines that the first piece ofcontent and the new content are of the same content type (e.g., both areHLS format), then in operation 408, codec information is detected forthe new content. In example embodiments, the player 202 examines theprefetched metadata for the new content for the codec information. Thecodec information indicates types of decoders needed for the newcontent.

In operation 410, a determination is made by the player 202 as towhether the types of decoders needed for the new content is the same asthe decoders currently in the pipeline 204 for the first piece ofcontent. If the types of decoders needed is the same, then in operation412 the entire pipeline 204 is preserved. In other words, the resourcesof the pipeline 204 are maintained and continued to be used to playbackthe new content.

However, if in operation 410 the player 202 determines that the newcontent needs different decoders, then in operation 414, the decoders(e.g., the audio decoder 216 and the video decoder 208) are released.Subsequently in operation 416, a remaining portion of the pipeline 204(e.g., the source element 212 and the demux 214) are preserved ormaintained. In these embodiments, the player 202 acquires a new set ofdecoders (e.g., a new audio decoder and a new video decoder) applicableto the new content, and adds the new set of decoders to the preservedportion of the pipeline 204.

While example embodiments are discussed with respect to pipeline andbitrate preservation applicable to both DASH and HLS, exampleembodiments for preservation of bitrate and the pipeline is applicablefor any type of content that is adaptive in nature (e.g., where thecontent bitrate can change based on bandwidth).

FIG. 5 is a block diagram illustrating components of a machine 500,according to some example embodiments, able to read instructions 524from a machine-storage medium 522 (e.g., a non-transitorymachine-storage medium, a machine-readable storage medium, acomputer-readable storage medium, or any suitable combination thereof)and perform any one or more of the methodologies discussed herein, inwhole or in part. Specifically, FIG. 5 shows the machine 500 in theexample form of a computer device (e.g., a computer) within which theinstructions 524 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 500 to performany one or more of the methodologies discussed herein may be executed,in whole or in part.

For example, the instructions 524 may cause the machine 500 to executethe flow diagrams of FIGS. 3 and 4. The instructions 524 can transformthe general, non-programmed machine 500 into a particular machine (e.g.,specially configured machine) programmed to carry out the described andillustrated functions in the manner described.

In alternative embodiments, the machine 500 operates as a standalonedevice or may be connected (e.g., networked) to other machines. Themachine 500 may be a server computer, a client computer, a personalcomputer (PC), a tablet computer, a laptop computer, a netbook, aset-top box (e.g. STB), a personal digital assistant (PDA), a cellulartelephone, a smartphone, a web appliance, a network router, a networkswitch, a network bridge, a power adapter, or any machine 500 capable ofexecuting the instructions 524, sequentially or otherwise, that specifyactions to be taken by that machine 500. Further, while only a singlemachine 500 is illustrated, the term “machine” shall also be taken toinclude a collection of machines that individually or jointly executethe instructions 524 to perform any one or more of the methodologiesdiscussed herein.

The machine 500 includes a processor 502 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 504, and a static memory 506, which areconfigured to communicate with each other via a bus 508. The processor502 may contain microcircuits that are configurable, temporarily orpermanently, by some or all of the instructions 524 such that theprocessor 502 is configurable to perform any one or more of themethodologies described herein, in whole or in part. For example, a setof one or more microcircuits of the processor 502 may be configurable toexecute one or more modules (e.g., software modules) described herein.

The machine 500 may further include a graphics display 510 (e.g., aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, a cathode ray tube (CRT), orany other display capable of displaying graphics or video). The machine500 may also include an alphanumeric input device 512 (e.g., a keyboardor keypad), a cursor control device 514 (e.g., a mouse, a touchpad, atrackball, a joystick, a motion sensor, an eye tracking device, or otherpointing instrument), a storage unit 516, a signal generation device 518(e.g., a sound card, an amplifier, a speaker, a headphone jack, or anysuitable combination thereof), and a network interface device 520.

The storage unit 516 includes the machine-storage medium 522 (e.g., atangible machine-readable storage medium) on which are stored theinstructions 524 embodying any one or more of the methodologies orfunctions described herein. The instructions 524 may also reside,completely or at least partially, within the main memory 504. within theprocessor 502 (e.g., within the processor's cache memory), or both,before or during execution thereof by the machine 500. Accordingly, themain memory 504 and the processor 502 may be considered machine-storagemedia 522 (e.g., tangible and non-transitory machine-storage media).

In some example embodiments, the machine 500 may be a portable computingdevice and have one or more additional input components (e.g., sensorsor gauges). Examples of such input components include an image inputcomponent (e.g., one or more cameras), an audio input component (e.g., amicrophone), a direction input component (e.g., a compass), a locationinput component (e.g., a global positioning system (GPS) receiver), anorientation component (e.g., a gyroscope), a motion detection component(e.g., one or more accelerometers), an altitude detection component(e.g., an altimeter), and a gas detection component (e.g., a gas sensor.Inputs harvested by any one or more of these input components may beaccessible and available for use by any of the modules described herein.

Executable Instructions and Machine-Storage Medium

The various memories (i.e., 504, 506, and/or memory of the processor(s)502) and/or storage unit 516 may store one or more sets of instructionsand data structures (e.g., software) 524 embodying or utilized by anyone or more of the methodologies or functions described herein. Theseinstructions, when executed by processor(s) 502 cause various operationsto implement the disclosed embodiments.

As used herein, the terms “machine-storage medium,” “device-storagemedium,” “computer-storage medium” (referred to collectively as“machine-storage medium 522”) mean the same thing and may be usedinterchangeably in this disclosure. The terms refer to a single ormultiple storage devices and/or media (e.g., a centralized ordistributed database, and/or associated caches and servers) that storeexecutable instructions and/or data, as well as cloud-based storagesystems or storage networks that include multiple storage apparatus ordevices. The terms shall accordingly be taken to include, but not belimited to, solid-state memories, and optical and magnetic media,including memory internal or external to processors. Specific examplesof machine-storage media, computer-storage media, and/or device-storagemedia 522 include non-volatile memory, including by way of examplesemiconductor memory devices, e.g., erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), FPGA, and flash memory devices; magnetic disks such asinternal hard disks and removable disks; magneto-optical disks; andCD-ROM and DVD-ROM disks. The terms machine-storage media,computer-storage media, and device-storage media 522 specificallyexclude carrier waves, modulated data signals, and other such media, atleast some of which are covered under the term “signal medium” discussedbelow.

Signal Medium

The term “signal medium” or “transmission medium” shall be taken toinclude any form of modulated data signal, carrier wave, and so forth.The term “modulated data signal” means a signal that has one or more ofits characteristics set or changed in such a matter as to encodeinformation in the signal.

Computer Readable Medium

The terms “machine-readable medium,” “computer-readable medium” and“device-readable medium” mean the same thing and may be usedinterchangeably in this disclosure. The terms are defined to includeboth machine-storage media and signal media. Thus, the terms includeboth storage devices/media and carrier waves/modulated data signals.

The instructions 524 may further be transmitted or received over acommunications network 526 using a transmission medium via the networkinterface device 520 and utilizing any one of a number of well-knowntransfer protocols (e.g., HTTP). Examples of communication networks 526include a local area network (LAN), a wide area network (WAN), theInternet, mobile telephone networks, plain old telephone service (POTS)networks, and wireless data networks (e.g., WiFi, LTE, and WiMAXnetworks). The term “transmission medium” shall be taken to include anyintangible medium that is capable of storing, encoding, or carryinginstructions 524 for execution by the machine 500, and includes digitalor analog communications signals or other intangible medium tofacilitate communication of such software.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-storage medium 522 orin a transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor 502 or agroup of processors 502) may be configured by software (e.g., anapplication or application portion) as a hardware module that operatesto perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as afield-programmable gate array (FPGA) or an ASIC. A hardware module mayalso include programmable logic or circuitry that is temporarilyconfigured by software to perform certain operations. For example, ahardware module may include software encompassed within ageneral-purpose processor or other programmable processor. It will beappreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software mayaccordingly configure a processor, for example, to constitute aparticular hardware module at one instance of time and to constitute adifferent hardware module at a different instance of time.

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules.

EXAMPLES

Example 1 is a method for optimizing a content change process. Themethod comprises causing playback, by a digital receiver, of a firstpiece of content; receiving, by the digital receiver, a selection of anew piece of content for playback during the playback of the first pieceof content; and in response to the receiving of the selection,maintaining, by a processor of the digital receiver, a bitrate used forplayback of the first piece of content to initiate playback of the newpiece of content.

In example 2, the subject matter of example 1 can optionally includedetermining whether the new piece of content is of a same type as thefirst piece of content; and based on the new piece of content being thesame type as the first piece of content, determining whether to preserveat least a portion of a playback pipeline.

In example 3, the subject matter of examples 1-2 can optionally includewherein the determining whether to preserve comprises detecting codecinformation for the new piece of content, the codec informationindicating types of decoders needed for the new content; and determiningwhether an audio decoder and a video decoder in the pipeline are of thetypes indicated by the codec information.

In example 4, the subject matter of examples 1-3 can optionally includepreserving the entire pipeline in response to the audio decoder and thevideo decoder in the pipeline being the types indicated by the codecinformation.

In example 5, the subject matter of examples 1-4 can optionally includereleasing the audio decoder and the video decoder in the pipeline inresponse to the audio decoder and the video decoder in the pipelinebeing different than the types indicated by the codec information; andobtaining a new audio decoder and a new video decoder based on the codecinformation.

Example 6 is a system optimizing a content change process. The systemincludes one or more hardware processors and a storage device storinginstructions that configure the one or more hardware processors toperform operations comprising causing playback of a first piece ofcontent; receiving a selection of a new piece of content for playbackduring the playback of the first piece of content; and in response tothe receiving of the selection, maintaining a bitrate used for playbackof the first piece of content to initiate playback of the new piece ofcontent.

In example 7, the subject matter of example 6 can optionally includedetermining whether the new piece of content is of a same type as thefirst piece of content; and based on the new piece of content being thesame type as the first piece of content, determining whether to preserveat least a portion of a playback pipeline.

In example 8, the subject matter of examples 6-7 can optionally includewherein the determining whether to preserve comprises detecting codecinformation for the new piece of content, the codec informationindicating types of decoders needed for the new content; and determiningwhether an audio decoder and a video decoder in the pipeline are of thetypes indicated by the codec information.

In example 9, the subject matter of examples 6-8 can optionally includepreserving the entire pipeline in response to the audio decoder and thevideo decoder in the pipeline being the types indicated by the codecinformation.

In example 10, the subject matter of examples 6-9 can optionally includereleasing the audio decoder and the video decoder in the pipeline inresponse to the audio decoder and the video decoder in the pipelinebeing different than the types indicated by the codec information; andobtaining a new audio decoder and a new video decoder based on the codecinformation.

Example 11 is machine-readable medium storing instructions that whenexecuted by one or more hardware processors of a machine, cause themachine to perform operations comprising causing playback of a firstpiece of content; receiving a selection of a new piece of content forplayback during the playback of the first piece of content; and inresponse to the receiving of the selection, maintaining a bitrate usedfor playback of the first piece of content to initiate playback of thenew piece of content.

In example 12, the subject matter of example 11 can optionally includedetermining whether the new piece of content is of a same type as thefirst piece of content; and based on the new piece of content being thesame type as the first piece of content, determining whether to preserveat least a portion of a playback pipeline.

In example 13, the subject matter of examples 11-12 can optionallyinclude wherein the determining whether to preserve comprises detectingcodec information for the new piece of content, the codec informationindicating types of decoders needed for the new content; and determiningwhether an audio decoder and a video decoder in the pipeline are of thetypes indicated by the codec information.

In example 14, the subject matter of examples 11-13 can optionallyinclude preserving the entire pipeline in response to the audio decoderand the video decoder in the pipeline being the types indicated by thecodec information.

In example 15, the subject matter of examples 11-14 can optionallyinclude releasing the audio decoder and the video decoder in thepipeline in response to the audio decoder and the video decoder in thepipeline being different than the types indicated by the codecinformation; and obtaining a new audio decoder and a new video decoderbased on the codec information.

Some portions of the subject matter discussed herein may be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexamples of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities maytake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present invention. For example,various embodiments or features thereof may be mixed and matched or madeoptional by a person of ordinary skill in the art. Such embodiments ofthe inventive subject matter may be referred to herein, individually orcollectively, by the term “invention” merely for convenience and withoutintending to voluntarily limit the scope of this application to anysingle invention or inventive concept if more than one is, in fact,disclosed.

The embodiments illustrated herein are believed to be described insufficient detail to enable those skilled in the art to practice theteachings disclosed. Other embodiments may be used and derivedtherefrom, such that structural and logical substitutions and changesmay be made without departing from the scope of this disclosure. TheDetailed Description, therefore, is not to be taken in a limiting sense,and the scope of various embodiments is defined only by the appendedclaims, along with the full range of equivalents to which such claimsare entitled.

Moreover, plural instances may be provided for resources, operations, orstructures described herein as a single instance. Additionally,boundaries between various resources, operations, modules, engines, anddata stores are somewhat arbitrary, and particular operations areillustrated in a context of specific illustrative configurations. Otherallocations of functionality are envisioned and may fall within a. scopeof various embodiments of the present invention. In general, structuresand functionality presented as separate resources in the exampleconfigurations may be implemented as a combined structure or resource.Similarly, structures and functionality presented as a single resourcemay be implemented as separate resources. These and other variations,modifications, additions, and improvements fall within a scope ofembodiments of the present invention as represented by the appendedclaims. The specification and drawings are, accordingly, to be regardedin an illustrative rather than a restrictive sense.

1. A method comprising: causing playback, by a digital receiver, of afirst piece of content at a first bitrate; receiving, by the digitalreceiver, a selection of a new piece of content for playback during theplayback of the first piece of content; in response to the receiving ofthe selection, transitioning to the new piece of content by initiatingplayback of the new piece of content using the first bitrate used forplayback of the first piece of content; detecting whether the newcontent can maintain playback at the first bitrate; and in response tothe detecting that the new content cannot continue playback at the firstbitrate, adjusting the first bitrate.
 2. The method of claim 1, furthercomprising: determining whether the new piece of content is of a sametype as the first piece of content; and based on the new piece ofcontent being the same type as the first piece of content, determiningwhether to preserve at least a portion of a playback pipeline used toplay back the first piece of content, the preserving of at least theportion of the playback pipeline comprising preserving one or more of asource element, a demultiplexer, an audio decoder, or a video decoder.3. The method of claim 2, wherein the determining whether to preservecomprises: detecting codec information for the new piece of content, thecodec information indicating types of decoders needed for the newcontent; and determining whether the audio decoder and the video decoderin the playback pipeline are of the types indicated by the codecinformation.
 4. The method of claim 3, further comprising preserving theentire playback pipeline in response to the audio decoder and the videodecoder in the playback pipeline being the types indicated by the codecinformation.
 5. The method of claim 3, further comprising: releasing theaudio decoder and the video decoder in the playback pipeline in responseto the audio decoder and the video decoder in the playback pipelinebeing different than the types indicated by the codec information; andobtaining a new audio decoder and a new video decoder based on the codecinformation.
 6. A system comprising: one or more hardware processors;and a storage device storing instructions that configure the one or morehardware processors to perform operations comprising: causing playback,by a digital receiver, of a first piece of content at a first bitrate;receiving, by the digital receiver, a selection of a new piece ofcontent for playback during the playback of the first piece of content;in response to the receiving of the selection, transitioning to the newpiece of content by initiating playback of the new piece of contentusing the first bitrate used for playback of the first piece of content;detecting whether the new content can maintain playback at the firstbitrate; and in response to the detecting that the new content cannotcontinue playback at the first bitrate, adjusting the first bitrate. 7.The system of claim 6, wherein the operations further comprise:determining whether the new piece of content is of a same type as thefirst piece of content; and based on the new piece of content being thesame type as the first piece of content, determining whether to preserveat least a portion of a playback pipeline used to play back the firstpiece of content, the preserving of at least the portion of the playbackpipeline comprising preserving one or more of a source element, ademultiplexer, an audio decoder, or a video decoder.
 8. The system ofclaim 7, wherein the determining whether to preserve comprises:detecting codec information for the new piece of content, the codecinformation indicating types of decoders needed for the new content;determining whether the audio decoder and the video decoder in theplayback pipeline are of the types indicated by the codec information.9. The system of claim 8, wherein the operations further comprisepreserving the entire playback pipeline in response to the audio decoderand the video decoder in the playback pipeline being the types indicatedby the codec information.
 10. The system of claim 8, wherein theoperations further comprise: releasing the audio decoder and the videodecoder in the playback pipeline in response to the audio decoder andthe video decoder in the playback pipeline being different than thetypes indicated by the codec information; and obtaining a new audiodecoder and a new video decoder based on the codec information.
 11. Amachine-readable medium storing instructions that when executed by oneor more hardware processors of a machine, cause the machine to performoperations comprising: causing playback, by a digital receiver, of afirst piece of content; receiving, by the digital receiver, a selectionof a new piece of content for playback during the playback of the firstpiece of content; and in response to the receiving of the selection,transitioning to the new piece of content by initiating playback of thenew piece of content using the first bitrate used for playback of thefirst piece of content detecting whether the new content can maintainplayback at the first bitrate; and in response to the detecting that thenew content cannot continue playback at the first bitrate, adjusting thefirst bitrate.
 12. The machine-readable medium of claim 11, wherein theoperations further comprise: determining whether the new piece ofcontent is of a same type as the first piece of content; and based onthe new piece of content being the same type as the first piece ofcontent, determining whether to preserve at least a portion of aplayback pipeline used to playback the first piece of content, thepreserving of at least the portion of the playback pipeline comprisingpreserving one or more of a source element, a demultiplexer, an audiodecoder, or a video decoder.
 13. The machine-readable medium of claim12, wherein the determining whether to preserve comprises: detectingcodec information for the new piece of content, the codec informationindicating types of decoders needed for the new content; and determiningwhether the audio decoder and the video decoder in the playback pipelineare of the types indicated by the codec information.
 14. Themachine-readable medium of claim 13, wherein the operations furthercomprise preserving the entire playback pipeline in response to theaudio decoder and the video decoder in the playback pipeline being thetypes indicated by the codec information.
 15. The machine-readablemedium of claim 13, wherein the operations further comprise: releasingthe audio decoder and the video decoder in the playback pipeline inresponse to the audio decoder and the video decoder in the playbackpipeline being different than the types indicated by the codecinformation; and obtaining a new audio decoder and a new video decoderbased on the codec information.
 16. The method of claim 1, wherein: thedetecting whether the new content can maintain playback at the firstbitrate comprises determining that download of the new content is takingless time than anticipated; and the adjusting comprises increasing thefirst bitrate.
 17. The method of claim 1, wherein: the detecting whetherthe new content can maintain playback at the first bitrate comprisesdetermining that download of the new content is taking longer thananticipated; and the adjusting comprises decreasing the first bitrate.18. The system of claim 6, wherein: the detecting whether the newcontent can maintain playback at the first bitrate comprises determiningthat download of the new content is taking less time than anticipated;and the adjusting comprises increasing the first bitrate.
 19. The systemof claim 6, wherein: the detecting whether the new content can maintainplayback at the first bitrate comprises determining that download istaking longer than anticipated; and the adjusting comprises decreasingthe first bitrate.
 20. The machine-readable medium of claim 11 wherein:the detecting whether the new content can maintain playback at the firstbitrate comprises determining that download of the new content is takingless time than anticipated and the adjusting comprises increasing thefirst bitrate; or the detecting whether the new content can maintainplayback at the first bitrate comprises determining that download istaking longer than anticipated and the adjusting comprises decreasingthe first bitrate.